import Vue from 'vue'
import axios from 'axios'
// import qs from 'qs'
import { Message } from 'element-ui';


axios.defaults.timeout = 5000;                        //响应时间
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';        //配置请求头
// axios.defaults.headers.post['Content-Type'] = 'Access-Control-Allow-Origin';        //配置请求头
axios.defaults.baseURL = '';   //配置接口地址

// 生产环境
// axios.defaults.baseURL = '/';   //配置接口地址


//POST传参序列化(添加请求拦截器)
// axios.interceptors.request.use((config) => {
//     //在发送请求之前做某件事
//     if(config.method  === 'post'){
//         config.data = qs.stringify(config.data);
//     }
//     return config;
// },(error) =>{
//     console.log('错误的传参')
//     return Promise.reject(error);
// });


// 添加请求拦截器，在请求头中加token
axios.interceptors.request.use(
    config => {
        // config.headers.Authorization = 'dsfggf';
      if (localStorage.getItem('Authorization')) {
          config.headers.Authorization = localStorage.getItem('Authorization');
    }
      return config;
    },
    error => {
      return Promise.reject(error);
});

const this_ =this
//返回状态判断(添加响应拦截器)
axios.interceptors.response.use((res) =>{
    // 获取状态码
    // console.log('res.status',res.status)
    
    //对响应数据做些事
    if(!res.data.success){
        return Promise.resolve(res);
    }

    if(res.data.code === '0'){
        return res;
    }else if(res.status === '401'){
        Message.error(res.data.msg)
        this.$store.commit('LOGOUT')
        this.$router.push('/login')
    }
    else{
        Message.error(res.data.msg);
    }

}, (error) => {
    Message.error('网络错误');
    return Promise.reject(error);
});

//返回一个Promise(发送post请求)
export function post(url, params) {
    return new Promise((resolve, reject) => {
        axios.post(url, params)
            .then(response => {
                resolve(response);
            }, err => {
                reject(err);
            })
            .catch((error) => {
                reject(error)
            })
    })
}
////返回一个Promise(发送get请求)
export function get(url, param) {
    return new Promise((resolve, reject) => {
        axios.get(url, {params: param})
            .then(response => {
                resolve(response)
            }, err => {
                reject(err)
            })
            .catch((error) => {
                reject(error)
            })
    })
}
export default {
    post,
    get,
}
